//package com.amethyst.mybatisplus.generator;
//
//import com.baomidou.mybatisplus.annotation.DbType;
//import com.baomidou.mybatisplus.annotation.IdType;
//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
//import com.baomidou.mybatisplus.generator.AutoGenerator;
//import com.baomidou.mybatisplus.generator.config.*;
//import com.baomidou.mybatisplus.generator.config.rules.DateType;
//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
//import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
//
//import java.util.Scanner;
//
///**
// * @author Amethyst
// * @date 2021/11/10
// */
//public class CodeGenerator {
//
//    /**
//     * 读取控制台内容
//     * @param tip
//     * @return
//     */
//    public static String scanner(String tip) {
//        Scanner scanner = new Scanner(System.in);
//        StringBuilder help = new StringBuilder();
//        help.append("请输入" + tip + ": ");
//        System.out.println(help.toString());
//        if (scanner.hasNext()) {
//            String ipt = scanner.next();
//            if (StringUtils.isNotBlank(ipt)) {
//                return ipt;
//            }
//        }
//        throw new MybatisPlusException("请输入正确的" + tip + "!");
//    }
//
//    public void generate() {
//        AutoGenerator generator = new AutoGenerator();
//
//        // 1.全局配置
//        GlobalConfig globalConfig = new GlobalConfig();
//        String projectPath = System.getProperty("user.dir");
//        // 设置输出到的目录
//        globalConfig.setOutputDir(projectPath + "/mybatis-plus/src/main/java");
//        globalConfig.setAuthor("amethyst");
//        // 生成结束后是否打开文件夹
//        globalConfig.setOpen(false);
//        // 实体属性 swagger2注解
//        globalConfig.setSwagger2(false);
//        // 重新生成时文件覆盖
//        globalConfig.setFileOverride(true);
//        // 去掉Service接口的首字母I
//        globalConfig.setServiceName("%sService");
//        // 主键策略
//        globalConfig.setIdType(IdType.AUTO);
//        // 定义生成的实体类中的日期类型
//        globalConfig.setDateType(DateType.ONLY_DATE);
//        generator.setGlobalConfig(globalConfig);
//
//        // 2.数据源配置
//        DataSourceConfig dataSourceConfig = new DataSourceConfig();
//        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
//        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/test?userUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai");
//        dataSourceConfig.setUsername("root");
//        dataSourceConfig.setPassword("123456");
//        dataSourceConfig.setDbType(DbType.MYSQL);
//        generator.setDataSource(dataSourceConfig);
//
//        // 3.包配置，生成的代码放在哪个包下
//        PackageConfig packageConfig = new PackageConfig();
//        packageConfig.setModuleName(scanner("模块名"));
//        packageConfig.setParent("com.amethyst.mybatisplus.generator");
//        generator.setPackageInfo(packageConfig);
//
//        // 4.配置模板
//        TemplateConfig templateConfig = new TemplateConfig();
//        // 指定自定义模板路径，注意不要带上.ftl/.vm，会恩据使用的模板引擎自动识别
//        templateConfig.setController("templates/controller.java");
//        generator.setTemplate(templateConfig);
//
//        // 5.策略配置
//        StrategyConfig strategyConfig = new StrategyConfig();
//        // 下划线驼峰命名转换
//        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
//        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
//        // 开启lombok
//        strategyConfig.setEntityLombokModel(true);
//        // 开启RestController
//        strategyConfig.setRestControllerStyle(true);
//        strategyConfig.setInclude(scanner("表名，多个英文逗号分割").split(","));
//        // url中驼峰转连字符
//        strategyConfig.setControllerMappingHyphenStyle(true);
//        // 生成实体时去掉表前缀
//        strategyConfig.setTablePrefix( "mp_");
//        generator.setStrategy(strategyConfig);
//
//        generator.setTemplateEngine(new FreemarkerTemplateEngine());
//
//        // 开始生成
//        generator.execute();
//    }
//
//    public static void main(String[] args) {
//        CodeGenerator codeGenerator = new CodeGenerator();
//        codeGenerator.generate();
//    }
//}
